iT邦幫忙

4

如何從零開始學寫程式?

  • 分享至 

  • xImage
  •  

在程式討論區上面偶爾會有迷途的菜鳥或搞不清楚狀況的老百姓闖進來,劈頭就問:
「我沒有基礎,數學也不好,要怎麼從零開始學寫程式?」

先不管他是覺得當碼農可以賺大錢還是覺得很帥還是幹嘛的,其實我覺得程式寫久的老鳥們,通常都容易一葉帳目,或者說,帶著「知識的詛咒」,而忘了還不會寫程式的自己是甚麼樣子(所以都會忍不住噴出一些情緒性發言),所以作為一個剛學成或者剛入行不久的人,我想最適合來回答這個問題。

首先,你要想想自己學寫程式,是為了甚麼,這很重要。

很多人覺得學寫程式,是一種邁向財富自由的途徑,所以再怎麼吃力咬咬牙都是值得的,出於這種動機的人,通常所有人(包括我)都會建議,賺錢的門路有很多,請自尋出路,程式設計這個工作只是讓你沒有空花錢所以存錢很快(但實際上要花也不會沒時間),工作的穩定性呢,要端看自己有多上進或多有天賦,所以我會說,這可能是提供一個智力中上的人,在亞洲這種做人大於做事的地獄難度職場裡,可以最大可能去一分耕耘一分收獲的地方,但不會讓你大把大把的賺大錢。

我的確是靠它稍微脫貧,但也只是脫貧變成一個...隨處可見有點窮的普通人,主要還是一個個任務破關時給我帶來的快感,令我難以離開這個環境,原生家庭很差的人,要靠經濟離家獨立的話,沒有覺悟不要做這行,外面有很多來錢快的機會。

如果是真的,不知道為什麼,也不認識程式,但是很想寫寫看的話,那就可以往下聊了。

我們不是靠敲敲字產生程式就能呼風喚雨,而是實地去發掘生活中或工作中的痛點,利用程式去解決它,如果可以不用程式去解決它,或者養成拆解問題去逐步解決的習慣,那樣的能力其實不只有利於寫程式,它會稍微改變你對這個世界的觀點。

很久以前,有一個很受大學生歡迎的小程式,它透過給使用者一種「好像我也能寫程式」的錯覺,操縱簡單的腳本介面,去透過電腦完成相對簡單的自動化任務,這個程式叫做按鍵精靈。

一開始的時候,我拿它來卡楓之谷連點程式,甚至為了破解官方的抓外掛帳號,寫了擲骰判定下一步的類人隨機操作(好孩子不要學!),但大部分時間就是把腳色卡在固定座標,一段時間讓電腦自己戳一下滑鼠,戳幾下之後起來走一走、打幾隻怪再回到固定座標。

後來的使用方式就比較生活化,比如說預先演練選課步驟,在選課日當天掐準時間執行腳本,搶不到的課就設定在半夜的時候定時巡視搶課,去賭那些半夜換課的天真孩子們。

我不是一個喜歡看說明書的人,所以剛抓來用的時候,大部分的使用方式都是錄製動作後微調,還經常因為錄製時走神重錄浪費很多時間。

慢慢地我發現做事情的精髓,很多時候都在於「拆解步驟」,從中去找出規律,以及可以省下的彎路。

舉個例子。

我小時候家裡教得很嚴,衣服要一件件穿一件件脫,脫好甩一甩上面的皮屑與髒汙,再視狀況決定要洗,還是留著當周繼續穿。這樣的生活習慣其實很好,但它好幾次害我出門前花太久時間結果遲到。而且我一個走在路上會被叫先生的小姐,穿得乾淨體面,其實還不如美女套個麻布袋在身上,於是我決定當個徹頭徹尾的肥宅,配好一套衣服之後,每天一口氣一起穿脫,只換掉最裡面那件貼身吸汗用的衣服,很邋遢,但我確實省下很多我覺得沒必要的時間,當然出社會之後,被主管狠狠地教育一頓,挖空心思設計穿得體面又省力的風格,那是另一個故事...

說遠了,我再舉個例子。

有一陣子我在當文書行政,那個工作本身是收集各地資料,按照各縣市與該縣市分店,整理出客戶資料,並統整按行政區投遞客戶申請資料。

原本上司示範給我看的流程是這樣:

1.每個分店的電子檔資料,都按照申請表格式登打整理成Excel,一個分店建一個Excel。

2.將這些分店打好的資料,依照鄉鎮市區整理到一個資料夾

3.套印後進行實體文書處理(貼一些收據啥的)

如果這個工作是時薪制,我肯定默默地往死裡打這些資料,巴不得加班加到死。

但是當時我還有主要的志業要經營,為了視為副業而且只是領比最低月薪高一點點的行政文書浪費時間,我覺得無法。所以做了幾個月後,我發現不管Excel是圓是扁有多少筆資料,它最終都是會依照檔案逐筆套印出來,那一個鎮如果有300筆分散在三個分店,三個分店分三個檔案印跟三個分店合併成一個檔案印效果是一樣的。

所以徵得主管的同意之後,我把原本的流程一號:

建立A鄉鎮分店1.xlsx>
打開A鄉鎮分店1電子檔>
登打A鄉鎮分店1,存檔>
建立B鄉鎮分店1.xlsx>
打開B鄉鎮分店1電子檔>
登打B鄉鎮分店1,存檔>
建立A鄉鎮分店2.xlsx>
打開A鄉鎮分店2電子檔>
登打A鄉鎮分店2,存檔>
將A鄉鎮分店1跟分店2移到A鄉鎮資料夾>
將B鄉鎮分店1移到B鄉鎮資料夾>
套印A鄉鎮資料夾內分店1.xlsx>
套印A鄉鎮資料夾內分店2.xlsx>
A鄉鎮紙本交給其他行政處理>
套印B鄉鎮資料夾內分店1.xlsx>
B鄉鎮紙本交給其他行政處理>

改成流程二號:
*先有各縣市分店總表(本來就會在流程1移資料夾時用到),按鄉鎮行政區排序。

建立A鄉鎮.xlsx>
打開A鄉鎮分店1電子檔>
登打A鄉鎮分店1>
打開A鄉鎮分店2電子檔>
登打A鄉鎮分店2,存檔>
建立B鄉鎮.xlsx>
打開B鄉鎮分店1電子檔>
登打B鄉鎮分店1,存檔>
套印A鄉鎮.xlsx>
A鄉鎮紙本交給其他行政處理>
套印B鄉鎮.xlsx>
B鄉鎮紙本交給其他行政處理>
我們知道打字是會越打越快的,中間如果一直因為一些小事情中斷,打字速度就會慢下來。

所以如果某個行政區裡面有十幾間分店,逐一建檔的狀況下,光建檔打字就要玩到晚上了,而一氣呵成的Key完十幾間分店再存檔,就會快很多,也省下了集中檔案到資料夾的功夫。

也因為我只是不想加班耽誤我另一個工作的時間,當主管找我吃飯,提到其他人效率低落的難題的時候,我也沒想太多把原理告訴它...

然後主管就因為改良程序、提升效率往核心高升,不漂亮又不擅於當職場交際花的派遣小妹我,很快就被期滿不續聘...(幹)

但功勞被吃掉跟會拆解任務沒有甚麼關係,畢竟一個女生長得醜、又不會來事、還得在亞洲討生活,就注定前途天花板遠比一般人低,而且這些觀念是我自己的,對方並不是偷走我的腦袋,我可以換個地方把這套邏輯再運轉一遍,而它永遠只能祈禱有人讓它偷拐搶騙。

...好我們打住,怨念實在太重了。

你可能會想,我哪裡去找這麼腦殘的主管跟職場來練習拆解動作?其實這也沒有那麼重要,生活中很多事情,都能拆解成很多細小的順序,有些順序可以換而有些不行,你只要練習去找到它的規律就好。

比如說,騎車。

鑰匙要先插到底,先轉開龍頭鎖(如果你的車有裝),牽到適合發動的地方,再將鑰匙轉到發動標誌,要先按住某一邊的剎車當離合器不放,再同時催下油門,ROOOOOM!車子發動了,在這之前的順序一個都不能換,頂多能抽掉牽到適合發動的地方這個動作,因為搞不好就是在空地停車啊。

比如說,做菜。
我很喜歡吃需要爆香的湯頭。
但是爆香很麻煩,需要熱油、需要加料後翻炒、需要抓火侯跟溫度,熱油到炒完加高湯之前一步都不能離開灶前還要油煙吸飽吸滿,加高湯之後還要顧火讓它不要煮太滾。

煩死了。

我先切好辛香料。
把辛香料跟少許油拌過放進小深碟裡,蓋上烘焙紙防噴濺,送進烤箱,高溫時間設定10分鐘,去玩死亡擱淺十分鐘。
烤箱時間到,在鍋裡放入高湯、隨意撕碎的菜、喜歡的肉料、烤箱代為爆香的辛香料,放電鍋並設定30分鐘的計時器,然後。
去玩死亡擱淺,時間到開飯,要吃麵頂多把已經熱呼呼的湯端上爐子快速煮滾快速扔麵拌一拌。

這煮法很有事我知道,可是遊戲實在太好玩了。

看,拆解步驟重組的邏輯很有趣對吧。

從拆解做事情的步驟開始,等稍微熟練之後,去研究流程圖,然後細想當你要做某件事,這件事需要哪些步驟?

某方面來說,程式就是從寫一個個步驟的功能,湊成做一件事的軟體,這個規劃的過程就是簡單的程式設計。

而程式只是讓你照著這些步驟,寫了之後組裝成軟體,可以用電腦跑你寫的軟體、完成這些事情,說真的大多數時間是不拘甚麼語言的。

程式的功能目標就像是羅馬,從台灣出發移動到羅馬,有很多種千奇百怪的方法,而這些方法跟路徑對照到軟體設計,就是使用的程式語言跟框架,但最重要的是,最後總是要到。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

1
davidchen0117
iT邦新手 4 級 ‧ 2024-04-01 13:29:33

謝謝妳的經驗分享。

1
Penut Chen
iT邦新手 1 級 ‧ 2024-04-02 11:10:52

沒空花錢太貼切了 QQ

我要留言

立即登入留言